In today's information age, computers and computer peripherals are frequently interconnected over a communication network. A typical communication network includes a number of networking devices, such as switches and routers. These networking devices work together to route packets of information from a source device to one or more destination devices.
A typical networking device includes a number of line cards. Each line card occupies a “slot” of the networking device, and supports one or more network interfaces (each referred to hereinafter as a “slot port”) through which the networking device communicates with various other devices, including other networking devices. Exemplary slot port types include Ethernet and SONET.
Within the networking device, the line cards are interconnected by a switching fabric. Each line card includes one or more fabric interfaces (each referred to hereinafter as a “fabric port”). Among other things, the fabric ports on a particular line card may be used for supporting different types of fabric services (e.g., unicast versus multicast fabric ports) and/or for supporting priority queues (e.g., high priority versus low priority fabric ports). The switching fabric routes information between the line cards, and more particularly between fabric ports.
Each line card includes logic for receiving, processing, and transmitting packets. Each line card can receive and transmit packets over its fabric port(s) and over its slot port(s). Each line card maintains a routing table that is typically distributed to all line cards by a central controller. The routing table includes a number of routing table entries, where each routing table entry indicates, among other things, the outgoing interface(s) associated with a particular destination. An outgoing interface can be a slot port on the same line card as indicated by a slot port number, a different line card as indicated by a slot number, or a specific fabric port on a different line card as indicated by a slot number/fabric port number pair.
The line cards interoperate over the switching fabric in order to route packets. Specifically, a packet received by a particular line card (referred to hereinafter as the “incoming line card”) over a particular slot port may be forwarded to other slot ports on the same line card and/or to other line cards. The incoming line card uses its routing table to determine the outgoing interfaces for the packet, typically based upon a destination address or label in the packet, and forwards the packet over the outgoing interface(s).
In certain applications, two line cards are “bridged” so that all packets sent to a first line card (referred to hereinafter as a “working line card” or “WLC”) over the switching fabric are also sent to a second line card (referred to hereinafter as the “protection line card” or “PLC”). Among other things, a bridge may be used for redundancy or protection switching. In a typical embodiment, bridging is accomplished by modifying the routing table to include the PLC as an outgoing interface in all routing table entries having the WLC as an outgoing interface. For convenience, each such routing table entry is referred to hereinafter as a “bridged routing table entry.” With a bridge in place, any packet that is sent to the WLC is also sent to the PLC.
When used for redundancy, both the WLC and the PLC typically have active connections to a common destination, and the bridge forwards packets to both the WLC and the PLC so that the packets are sent over both connections to the common destination. The destination receives the same packets over both connections, and therefore the destination can obtain packets from either connection. In this application, the bridge is considered to be a permanent bridge in that the bridge must be maintained at all times in order for redundancy to be maintained.
When used for protection switching, the PLC is typically a backup line card that is activated when communication over the WLC fails, either from a connection failure or a failure of the WLC itself. In this application, the bridge may be a permanent bridge or a temporary bridge. A permanent bridge is typically established before detecting the failure so that packets are already being sent to the PLC when the failure is detected. In this case, protection switching can be completed by simply activating the PLC upon detecting the failure. A temporary bridge is typically established dynamically after detecting the failure so that packets are not sent to the PLC until after the failure is detected. In this case, protection switching requires both establishment of the bridge and activation of the PLC.
A temporary bridge may be used for applications in which a permanent bridge is either undesirable or impractical. For example, a temporary bridge may be required when the PLC is used as a backup for multiple WLCs. In this application, when a failure is detected with one of the WLCs, a temporary bridge is established between that WLC and the PLC if there is no permanent bridge established between that WLC and the PLC.
Establishing a temporary bridge typically involves reworking the routing table in order to add the PLC as an outgoing interface in all routing table entries having the WLC as an outgoing interface. This takes a substantial amount of time during which no data flows over either the WLC or the PLC, especially in the case of multicast.